import { app, BrowserWindow, ipcMain } from 'electron'

export class IpcHandler {
  listen() {
    /**
     * 这是 Electron 中最基础的事件监听器。它只负责“接收”从渲染进程通过 ipcRenderer.send() 发送的消息，但不提供直接的、基于 Promise 的返回值机制。
     */
    ipcMain.on('set-title', (event, title) => {
      const webContents = event.sender
      const win = BrowserWindow.fromWebContents(webContents)
      win?.setTitle(title)
    })

    // 处理渲染进程的调用
    ipcMain.handle('get-user-data', async (event, userId) => {
      console.log('请求用户ID:', userId)

      // 这里可以执行异步操作，比如查询数据库或文件系统
      const userData = {
        name: '张三',
        age: 18
      }
      //await fakeAsyncDBAction(userId)

      // 直接返回结果，Promise 会自动处理
      return userData
    })

    // 处理渲染进程的调用
    ipcMain.handle('get-app-version', async (event, userId) => {
      const version = app.getVersion()
      return version
    })

    // 监听渲染进程的请求
    // ipcMain.on('asynchronous-message', (event, ...args) => {
    //   console.log('收到消息:', ...args) // 输出: 收到消息: ping
    //   // 处理一些任务...
    //   const result = 'pong'
    //   // 通过另一个频道手动发送回复
    //   // event.reply('asynchronous-reply', result)
    //   let i = 0
    //   let timer = setInterval(() => {
    //     if (i >= 100) {
    //       i = 100
    //       clearInterval(timer)
    //     } else {
    //       i += 1;
    //     }
    //     event.reply('asynchronous-reply', i)
    //   }, 30)
    // })
  }
}
